package Q1;

class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;
    public TreeNode(int val) {
     this.val = val;
    }
}

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param pRoot TreeNode类
     * @return bool布尔型
     */
    public boolean IsBalanced_Solution (TreeNode pRoot) {
        // write code here

        if (pRoot == null) {
            return true;
        }

        int heightLeft = method(pRoot.left, 0);
        int heightRight = method(pRoot.right, 0);

        return Math.abs(heightLeft - heightRight) <= 1;
    }

    /**
     * 计算子树高度
     * @param pRoot
     * @return
     */
    public int method(TreeNode pRoot, int height) {

        if (pRoot == null) {
            return 0;
        }

        if (pRoot.left != null) {
            method(pRoot.left, height + 1);
        }

        if (pRoot.right != null) {
            method(pRoot.right, height + 1);
        }

        return height;
    }
}
